package cn.tedu.collection;

import java.sql.SQLOutput;
import java.util.Arrays;

/*本类用于测试泛型的优点2*/
public class TestGeneric2 {
    public static void main(String[] args) {
//        Integer[] a = {1,2,3,4,5,6,7,8,9,10};
        Integer[] a = new Integer[]{1,2,3,4,5,6,7,8,9,10};
        //print(a); //print不是关键字
        String[] b = {"大哥","二哥","三哥","四哥","五哥","六哥","小弟"};
        //print(b);
        Double[] c = {6.0,6.6,6.66,6.666,6.6666}; //数据先准备好,后面可以使用和使用
        print(c);
//        System.out.println("直接打印Integer[]数组:"+Arrays.toString(a));
//        System.out.println("直接打印String[]数组:"+Arrays.toString(b));
//        System.out.println("直接打印Double[]数组:"+Arrays.toString(c));
    }

    /*1.泛型可以实现通用代码的编写(通用代码),使用E表示元素的类型是Element类型
     * 2.泛型的语法要求:
     * 如果在方法上使用泛型,必须两处同时出现,一个是传入参数的类型
     * 一个是返回值类型前的泛型类型,表示这是一个泛型方法*/ //返回值类型前面的添加泛型类型<E>,表示这是一个泛型方法

    private static <E> void print(E[] e) {  //减少代码冗余度,
        for(E ddd: e){
            System.out.println(ddd); //打印每次遍历出来的数组元素的名字的值
        }
    }
//    private static void print(Double[] cc) { //形参名字可以更改  //重载:和之前连上
//        /*for (:
//             ) {
//
//        }
//        for (int i = 0; i < ; i++) {
//
//        }*/
//
//
//        for(Double ddd : cc){
//            System.out.println(ddd);
//        }
//    }
//    private static void print(String[] b) {
//        for (String sss : b){
//            System.out.println(sss);
//        }
//    }
////    创建方法用来打印数组a
//    private static void print(Integer[] n) { //两种遍历方式
//        //普通for循环
//        for (int i = 0; i < n.length; i++) {
//            System.out.println(n[i]);  //对象名[下标值]
//        }
//        /*高效for循环/foreach循环
//        * 好处:比普通的for循环写法简便,并且效率还高
//        * 坏处:没有办法按照下标来操作值,只能从头到尾依次遍历
//        * 语法:for(2 3 : 1){循环体}
//        * 1号是要遍历的内容(需要遍历的对象),2 3 是每轮遍历到的具体元素的类型与名字(每轮遍历到的具体元素的类型与具体元素的名字)*/
//        for(Integer aaa : n){  //for ()
//            System.out.println(aaa);
//        }
//    }
}
